﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Infra.Common.DAO
{
    public class CompraDAL
    {
        public static void Salvar(Infra.Entity.STKCOMPRA compra)
        {
            using (Infra.Entity.DBInfraEntityDataContext dc = new Entity.DBInfraEntityDataContext())
            {
                if (compra.CODCompra != 0)
                {
                    //Alterar compra
                    var comp = dc.STKCOMPRAs.Single(cmp => cmp.CODCompra == compra.CODCompra);
                    comp.CODCliente = compra.CODCliente;
                    comp.CODOperdor = compra.CODOperdor;
                    comp.compData = compra.compData;
                    comp.compValor = compra.compValor;
                    dc.SubmitChanges();
                }
                else
                {
                    //Salvar compra
                    dc.STKCOMPRAs.InsertOnSubmit(compra);
                    dc.SubmitChanges();
                }
            }
        }



        public static void Excluir(int idCompra)
        {
            using (Infra.Entity.DBInfraEntityDataContext dc = new Entity.DBInfraEntityDataContext())
            {
                var comp = dc.STKCOMPRAs.Single(cmp => cmp.CODCompra == idCompra);
                dc.STKCOMPRAs.DeleteOnSubmit(comp);
                dc.SubmitChanges();
            }
        }



        public static List<Infra.Entity.STKCOMPRA> Pesquisar(int codigo, long codCliente, long codOperador, DateTime data, decimal valor)
        {
            List<Infra.Entity.STKCOMPRA> compras = null;
            using (Infra.Entity.DBInfraEntityDataContext dc = new Entity.DBInfraEntityDataContext())
            {
                var comp = from compra in dc.STKCOMPRAs
                           where (((codigo.Equals(0) || codigo.Equals(compra.CODCompra)) &&
                                   (codCliente.Equals(0) || codCliente.Equals(compra.CODCliente)) &&
                                   (codOperador.Equals(0) || codOperador.Equals(compra.CODOperdor))))

                           select compra;
                compras = comp.ToList();
            }
            return compras;
        }


        public static List<Infra.Entity.STKCOMPRA> Pesquisar()
        {
            List<Infra.Entity.STKCOMPRA> compras = null;
            using (Infra.Entity.DBInfraEntityDataContext dc = new Entity.DBInfraEntityDataContext())
            {
                var comp = from compra in dc.STKCOMPRAs
                           select compra;
                compras = comp.ToList();
            }
            return compras;
        }



        public static List<Infra.Entity.STKCOMPRA> PesquisarSP(int codigo, long codCliente, long codOperador, DateTime data, decimal valor)
        {
            List<Infra.Entity.STKCOMPRA> compras = null;
            // Pesquisa usando Stored procedure
            using (Infra.Entity.DBInfraEntityDataContext dc = new Entity.DBInfraEntityDataContext())
            {
                //var comp = dc.SP_PESQUISA_COMPRA(codigo, codCliente, codOperador, data, valor);
                //compras = comp.ToList();
            }
            return compras;
        }
    }
}
